// <com.woyouqiu.Copyright>
// --------------------------------------------------------------
// <copyright>上海有求网络科技有限公司 2015</copyright>
// <Solution>Vecen.BangChuang</Solution>
// <Project>Vecen.BangChuang.Application</Project>
// <FileName>IClassAppService.cs</FileName>
// <CreateTime>2017-05-04 23:56</CreateTime>
// <Author>何苗</Author>
// <Email>hemiao@woyouqiu.com</Email>
// <log date="2017-05-04 23:56" version="00001">创建</log>
// --------------------------------------------------------------
// </com.woyouqiu.Copyright>

using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Vecen.BangChuang.BangChuang.Classes.Dtos;

namespace Vecen.BangChuang.BangChuang.Classes {
    /// <summary>
    /// 课程操作
    /// </summary>
    public interface IClassAppService: IApplicationService {

        /// <summary>
        /// 获得所有课程
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ListResultDto<MicroClassListDto>> GetClassesAsync(GetClassesRequestDto input);

        /// <summary>
        /// 根据ID获得课程明细
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<MicroClassDetailDto> GetByIdAsync(int id);

        /// <summary>
        /// 上传课程
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task UploadClassAsync(ClassUploadInputDto input);


        /// <summary>
        /// 获得课程修改对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ClassUploadInputDto> GetClassEditDtoAsync(int id);

            /// <summary>
        /// 删除课程
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DeleteClassAsync(int id);
        /// <summary>
        /// 获得课程分组
        /// </summary>
        /// <returns></returns>
        Task<ListResultDto<ClassGroupOutDto>> GetClassGroupsAsync();

        /// <summary>
        /// 添加/修改课程分组
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task SaveClassGroupAsync(ClassGroupInputDto input);


        /// <summary>
        /// 获得课程分组修改对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ClassGroupInputDto> GetClassGroupForEditAsync(int id);

        /// <summary>
        /// 删除课程分组
        /// </summary>
        /// <param name="id">分组ID</param>
        /// <returns></returns>
        Task DeleteClassGroupAsync(int id);
    }
}